From: Matthias Clasen Date: Sun, 10 May 2015 03:53:45 +0000 (-0400) Subject: quartz: Support css cursor names X-Git-Tag: archive/raspbian/3.24.39-1+rpi1~1^2~65^2~39^2~6826 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=be9915b16a1a820fa18bf5de800099923372568e;p=gtk%2B3.0.git quartz: Support css cursor names We want these to work across platforms, so do a best-effort approximation. We could do much better here by copying what webkit does. https://bugzilla.gnome.org/show_bug.cgi?id=749178 --- diff --git a/gdk/quartz/gdkcursor-quartz.c b/gdk/quartz/gdkcursor-quartz.c index dfcb860e40..7423d3604a 100644 --- a/gdk/quartz/gdkcursor-quartz.c +++ b/gdk/quartz/gdkcursor-quartz.c @@ -281,8 +281,52 @@ GdkCursor* _gdk_quartz_display_get_cursor_for_name (GdkDisplay *display, const gchar *name) { - /* FIXME: Implement */ - return NULL; + NSCursor *nscursor; + + if (name == NULL || g_str_equal (name, "none")) + return create_blank_cursor (); + + if (g_str_equal (name, "pointer")) + nscursor = [NSCursor pointingHandCursor]; + else if (g_str_equal (name, "context-menu")) + nscursor = [NSCursor contextualMenuCursor]; + else if (g_str_equal (name, "cell")) + nscursor = [NSCursor crosshairCursor]; + else if (g_str_equal (name, "crosshair")) + nscursor = [NSCursor crosshairCursor]; + else if (g_str_equal (name, "text")) + nscursor = [NSCursor IBeamCursor]; + else if (g_str_equal (name, "vertical-text")) + nscursor = [NSCursor IBeamCursorForVerticalLayout]; + else if (g_str_equal (name, "alias")) + else if (g_str_equal (name, "copy")) + nscursor = [NSCursor dragCopyCursor]; + else if (g_str_equal (name, "move")) + else if (g_str_equal (name, "no-drop")) + nscursor = [NSCursor operationNotAllowedCursor]; + else if (g_str_equal (name, "not-allowed")) + nscursor = [NSCursor operationNotAllowedCursor]; + else if (g_str_equal (name, "grab")) + nscursor = [NSCursor openHandCursor]; + else if (g_str_equal (name, "grabbing")) + nscursor = [NSCursor closedHandCursor]; + else if (g_str_equal (name, "col-resize")) + nscursor = [NSCursor resizeLeftRightCursor]; + else if (g_str_equal (name, "row-resize")) + nscursor = [NSCursor resizeUpDownCursor]; + else if (g_str_equal (name, "n-resize")) + nscursor = [NSCursor resizeUpCursor]; + else if (g_str_equal (name, "e-resize")) + nscursor = [NSCursor resizeRightCursor]; + else if (g_str_equal (name, "s-resize")) + nscursor = [NSCursor resizeDownCursor]; + else if (g_str_equal (name, "w-resize")) + nscursor = [NSCursor resizeLeftCursor]; + else + nscursor = [NSCursor arrowCursor]; + + [nscursor retain]; + return gdk_quartz_cursor_new_from_nscursor (nscursor, cursor_type); } G_DEFINE_TYPE (GdkQuartzCursor, gdk_quartz_cursor, GDK_TYPE_CURSOR)